/**
 *
 */
package br.com.werp.regras.almoxarifado.controle;

import java.util.List;

import br.com.werp.regras.almoxarifado.integracao.FabricaDAO;
import br.com.werp.regras.almoxarifado.integracao.GrupoDAO;
import br.com.werp.regras.geral.Auditoria;
import br.com.werp.regras.geral.FabricaSubSistema;
import br.com.werp.regras.geral.util.BeanUtil;
import br.com.werp.regras.geral.util.Util;
import br.com.werp.regras.geral.vos.almoxarifado.CadastrarGruposFormVO;
import br.com.werp.regras.geral.vos.almoxarifado.PesquisarGruposFormVO;
import br.com.werp.regras.geral.vos.tabelas.Grupo;


/**
 * @author marcos 21/12/2006
 *
 */
public class ControleGrupo {
    public void salvarGrupo(Object form, String usuario)
        throws Exception {
        CadastrarGruposFormVO cadastrarGruposFormVO = new CadastrarGruposFormVO();
        BeanUtil.copiarVO(form, cadastrarGruposFormVO);

        Grupo grupo = new Grupo();
        BeanUtil.copiarVOStringTipo(cadastrarGruposFormVO, grupo);

        Auditoria auditoria = FabricaSubSistema.getAuditoria();
        GrupoDAO grupoDAO = FabricaDAO.getGrupoDAO();
        Object key = grupoDAO.iniciarTransacao();

        try {
            if (grupo.getGrpo_id() == 0) {
                grupoDAO.salvarGrupo(grupo, key);
                auditoria.auditarRecurso(key, usuario, grupo, Auditoria.INCLUIR);
            } else {
                grupoDAO.atualizarGrupo(grupo, key);
                auditoria.auditarRecurso(key, usuario, grupo, Auditoria.ALTERAR);
            }

            grupoDAO.concluirTransacao(key);
        } catch (Exception e) {
            grupoDAO.abortarTransacao(key);
            throw e;
        }
    }

    public List pesquisarGrupos(Object form) throws Exception {
        PesquisarGruposFormVO pesquisarGruposFormVO = new PesquisarGruposFormVO();

        BeanUtil.copiarVO(form, pesquisarGruposFormVO);

        Grupo grupo = new Grupo();
        BeanUtil.copiarVOStringTipo(pesquisarGruposFormVO, grupo);

        GrupoDAO grupoDAO = FabricaDAO.getGrupoDAO();
        List retorno = grupoDAO.pesquisarGrupos(grupo);

        return retorno;
    }

    public void carregarGrupos(Object form) throws Exception {
        Grupo grupo = (Grupo) Util.get0(pesquisarGrupos(form));

        BeanUtil.copiarVOStringTipo(grupo, form);
    }
}
